package cn.elead.it.sso.core.store;

import cn.elead.it.sso.core.model.SsoUser;

/**
 * <p>
 * 单点session工具
 * </p>
 *
 * @author luopeng
 */
public class SsoSessionIdHelper {

	/**
	 * 创建一个客戶端session
	 * 
	 * @param ssoUser
	 * @return
	 */
	public static String makeSessionId(SsoUser ssoUser) {
		String sessionId = ssoUser.getUserId().concat("_").concat(ssoUser.getVersion()).concat("_") + ssoUser.getClientSecret();
		//String sessionId = ssoUser.getUserId().concat("_").concat(ssoUser.getVersion());
		return sessionId;
	}

	/**
	 * 解析sessionId获取用户Id
	 * 
	 * @param sessionId
	 * @return
	 */
	public static String parseStoreKey(String sessionId) {

		if (sessionId != null && sessionId.indexOf("_") > -1) {
			String[] sessionIdArr = sessionId.split("_");
			if (sessionIdArr.length == 3 && sessionIdArr[0] != null && sessionIdArr[0].trim().length() > 0) {
				String userId = sessionIdArr[0].trim();
				return userId;
			}
		}
		return null;

	}

	/**
	 * 解析sessionId获取版本
	 * 
	 * @param sessionId
	 * @return
	 */
	public static String parseVersion(String sessionId) {
		if (sessionId != null && sessionId.indexOf("_") > -1) {
			String[] sessionIdArr = sessionId.split("_");
			if (sessionIdArr.length == 3 && sessionIdArr[1] != null && sessionIdArr[1].trim().length() > 0) {
				String version = sessionIdArr[1].trim();
				return version;
			}
		}
		return null;
	}

	/**
	 * 解析sessionId获取客户端秘钥
	 * 
	 * @param sessionId
	 * @return
	 */
	public static String parseSecret(String sessionId) {
		if (sessionId != null && sessionId.indexOf("_") > -1) {
			String[] sessionIdArr = sessionId.split("_");
			if (sessionIdArr.length == 3 && sessionIdArr[2] != null && sessionIdArr[2].trim().length() > 0) {
				String version = sessionIdArr[2].trim();
				return version;
			}
		}
		return null;
	}

}
